home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
9-Digit Zip Code Directory
/
9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO
/
z4src.zip
/
Z4ABBLD.C
< prev
next >
Wrap
C/C++ Source or Header
|
1995-05-02
|
48KB
|
850 lines
//----------------------------------------------------------------------------
// MODULE DESCRIPTION
//
// Module: z4abbld.c
// Title: 9-Digit ZIP Code Directory -- on CD-ROM
// Notice: John M. Weeder
// Copyright (c) 1993. All rights reserved.
// This module contains proprietary information and should be
// treated as confidential.
//
//----------------------------------------------------------------------------
// MAINTENANCE HISTORY
//
// $Workfile$
// $Revision$
// $Author$
// $Date$
// $Log$
//
//----------------------------------------------------------------------------
// MODULE NARRATIVE
//
// This module contains the program entry point for
//
// The code in this module may be written in C++ or C.
//
// This module is portable to:
// DOS 3.X+
// MS Windows 3.X+
// OS/2 2.X+
// OS/2 2.0 PM
//
// The following compilers are supported:
// MSC 6.0A
// MSC/C++ 7.0
// Borland C++ 3.1 for DOS
// Borland C++ 1.0 for OS/2 2.X
//
//----------------------------------------------------------------------------
#include <z4.h>
//----------------------------------------------------------------------------
// Stack size
//----------------------------------------------------------------------------
#if COMPILER_BORLAND && (OS_DOS || OS_WINDOWS)
unsigned _stklen = 0x4000;
#endif
//----------------------------------------------------------------------------
// Abbreviation table
//----------------------------------------------------------------------------
typedef struct _Z4_ABBR_ENTRY
{
PSZ psz1;
PSZ psz2;
PSZ psz3;
FLAG16 fs;
} Z4_ABBR_ENTRY;
#define MAX_ENTRIES (2048)
SIZET cEntries;
static Z4_ABBR_ENTRY entry[MAX_ENTRIES] =
{
{ "ONE", "FIRST", "1", Z4_P_NUMERIC },
{ "TWO", "SECOND", "2", Z4_P_NUMERIC },
{ "THREE", "THIRD", "3", Z4_P_NUMERIC },
{ "FOUR", "FOURTH", "4", Z4_P_NUMERIC },
{ "FORTH", "FOURTH", "4", Z4_P_NUMERIC },
{ "FIVE", "FIFTH", "5", Z4_P_NUMERIC },
{ "SIX", "SIXTH", "6", Z4_P_NUMERIC },
{ "SEVEN", "SEVENTH", "7", Z4_P_NUMERIC },
{ "EIGHT", "EIGHTH", "8", Z4_P_NUMERIC },
{ "NINE", "NINETH", "9", Z4_P_NUMERIC },
{ "TEN", "TENTH", "10", Z4_P_NUMERIC },
{ "TWELVE", "TWELVETH", "12", Z4_P_NUMERIC },
{ "THIRTEEN", "THIRTEENTH", "13", Z4_P_NUMERIC },
{ "FOURTEEN", "FOURTEENTH", "14", Z4_P_NUMERIC },
{ "FIFTEEN", "FIFTEENTH", "15", Z4_P_NUMERIC },
{ "SIXTEEN", "SIXTEENTH", "16", Z4_P_NUMERIC },
{ "SEVENTEEN", "SEVENTEENTH", "17", Z4_P_NUMERIC },
{ "EIGHTEEN", "EIGHTEENTH", "18", Z4_P_NUMERIC },
{ "NINETEEN", "NINETEENTH", "19", Z4_P_NUMERIC },
{ "TWENTY", "TWENTIETH", "20", Z4_P_NUMERIC },
{ "THIRTY", "THIRTIETH", "30", Z4_P_NUMERIC },
{ "FORTY", "FORTIETH", "40", Z4_P_NUMERIC },
{ "FIFTY", "FIFTIETH", "50", Z4_P_NUMERIC },
{ "SIXTY", "SIXTIETH", "60", Z4_P_NUMERIC },
{ "SEVENTY", "SEVENTIETH", "70", Z4_P_NUMERIC },
{ "EIGHTY", "EIGHTIETH", "80", Z4_P_NUMERIC },
{ "NINETY", "NINETIETH", "90", Z4_P_NUMERIC },
{ "HUNDRED", "HUNDREDTH", "100", Z4_P_NUMERIC },
{ "THOUSAND", "THOUSANDTH", "1000", Z4_P_NUMERIC },
{ "#", "#", "#", Z4_P_UNIT|Z4_P_OTHER },
{ "ALLEE", "ALLEY", "ALY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ALLY", "ALLEY", "ALY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ALY", "ALLEY", "ALY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ANEX", "ANNEX", "ANX", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ANNX", "ANNEX", "ANX", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ANX", "ANNEX", "ANX", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "APT", "APARTMENT", "APT", Z4_P_UNIT|Z4_P_ALPHA },
{ "ARC", "ARCADE", "ARC", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "AV", "AVENUE", "AVE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "AVE", "AVENUE", "AVE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "AVEN", "AVENUE", "AVE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "AVENU", "AVENUE", "AVE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "AVN", "AVENUE", "AVE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "AVNUE", "AVENUE", "AVE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BAYOO", "BAYOU", "BYU", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BCH", "BEACH", "BCH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BG", "BURG", "BG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BLDG", "BUILDING", "BLDG", Z4_P_UNIT|Z4_P_ALPHA },
{ "BLF", "BLUFF", "BLF", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BLUF", "BLUFF", "BLF", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BLUFFS", "BLUFF", "BLF", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BLVD", "BOULEVARD", "BLVD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BND", "BEND", "BND", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BOT", "BOTTOM", "BTM", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BOTTM", "BOTTOM", "BTM", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BOUL", "BOULEVARD", "BLVD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BOULV", "BOULEVARD", "BLVD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BR", "BRANCH", "BR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BRDGE", "BRIDGE", "BRG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BRG", "BRIDGE", "BRG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BRK", "BROOK", "BRK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BRNCH", "BRANCH", "BR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BROOKS", "BROOK", "BRK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BSMT", "BASEMENT ", "BSMT", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "BTM", "BOTTOM", "BTM", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BURGS", "BURG", "BG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BYP", "BYPASS", "BYP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BYPA", "BYPASS", "BYP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BYPAS", "BYPASS", "BYP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BYPS", "BYPASS", "BYP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "BYU", "BAYOU", "BYU", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CANYN", "CANYON", "CYN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CAUSWAY", "CAUSEWAY", "CSWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CEN", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CENT", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CENTERS", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CENTR", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CENTRE", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CIR", "CIRCLE", "CIR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CIRC", "CIRCLE", "CIR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CIRCL", "CIRCLE", "CIR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CIRCLES", "CIRCLE", "CIR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CLB", "CLUB", "CLB", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CLF", "CLIFFS", "CLFS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CLFS", "CLIFFS", "CLFS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CLIFF", "CLIFFS", "CLFS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CMP", "CAMP", "CP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CNTER", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CNTR", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CNYN", "CANYON", "CYN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "COR", "CORNER", "COR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CORS", "CORNERS", "CORS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "COVES", "COVE", "CV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CP", "CAMP", "CP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CPE", "CAPE", "CPE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRCL", "CIRCLE", "CIR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRCLE", "CIRCLE", "CIR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRECENT", "CRESCENT", "CRES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRES", "CRESCENT", "CRES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRESENT", "CRESCENT", "CRES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRK", "CREEK", "CRK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRSCNT", "CRESCENT", "CRES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRSE", "COURSE", "CRSE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRSENT", "CRESCENT", "CRES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRSNT", "CRESCENT", "CRES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CRSSNG", "CROSSING", "XING", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CSWY", "CAUSEWAY", "CSWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CT", "COURT", "CT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CTR", "CENTER", "CTR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CTS", "COURTS", "CTS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CV", "COVE", "CV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "CYN", "CANYON", "CYN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DEPT", "DEPARTMENT", "DEPT", Z4_P_UNIT|Z4_P_ALPHA },
{ "DIV", "DIVIDE", "DV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DL", "DALE", "DL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DM", "DAM", "DM", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DR", "DRIVE", "DR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DRIV", "DRIVE", "DR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DRIVES", "DRIVE", "DR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DRV", "DRIVE", "DR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DV", "DIVIDE", "DV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "DVD", "DIVIDE", "DV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "E", "EAST", "E", Z4_P_DIR|Z4_P_ALPHA },
{ "EST", "ESTATE", "EST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ESTATES", "ESTATE", "EST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ESTS", "ESTATE", "EST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXP", "EXPRESSWAY", "EXPY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXPR", "EXPRESSWAY", "EXPY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXPRESS", "EXPRESSWAY", "EXPY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXPW", "EXPRESSWAY", "EXPY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXPY", "EXPRESSWAY", "EXPY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXT", "EXTENSION", "EXT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXTN", "EXTENSION", "EXT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXTNSN", "EXTENSION", "EXT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "EXTS", "EXTENSION", "EXT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FALL", "FALL", "FALL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FL", "FLOOR", "FL", Z4_P_UNIT|Z4_P_ALPHA },
{ "FLATS", "FLAT", "FLT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FLD", "FIELD", "FLD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FLDS", "FIELDS", "FLDS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FLS", "FALLS", "FLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FLT", "FLAT", "FLT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FLTS", "FLAT", "FLT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FORDS", "FORD", "FRD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FORESTS", "FOREST", "FRST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FORG", "FORGE", "FRG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FORGES", "FORGE", "FRG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRD", "FORD", "FRD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FREEWY", "FREEWAY", "FWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRG", "FORGE", "FRG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRK", "FORK", "FRK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRKS", "FORKS", "FRKS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRNT", "FRONT", "FRNT", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "FRRY", "FERRY", "FRY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRST", "FOREST", "FRST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRT", "FORT", "FT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRWAY", "FREEWAY", "FWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRWY", "FREEWAY", "FWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FRY", "FERRY", "FRY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FT", "FORT", "FT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "FWY", "FREEWAY", "FWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GARDEN", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GARDN", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GATEWY", "GATEWAY", "GTWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GATWAY", "GATEWAY", "GTWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GDN", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GDNS", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GLENS", "GLEN", "GLN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GLN", "GLEN", "GLN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GRDEN", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GRDN", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GRDNS", "GARDENS", "GDNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GREENS", "GREEN", "GRN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GRN", "GREEN", "GRN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GROV", "GROVE", "GRV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GROVES", "GROVE", "GRV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GRV", "GROVE", "GRV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GTWAY", "GATEWAY", "GTWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "GTWY", "GATEWAY", "GTWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HARB", "HARBOR", "HBR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HARBORS", "HARBOR", "HBR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HARBR", "HARBOR", "HBR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HAVN", "HAVEN", "HVN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HBR", "HARBOR", "HBR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HEIGHT", "HEIGHTS", "HTS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HIGHWY", "HIGHWAY", "HWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HIWAY", "HIGHWAY", "HWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HIWY", "HIGHWAY", "HWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HL", "HILL", "HL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HLLW", "HOLLOW", "HOLW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HLS", "HILLS", "HLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HNGR", "HANGER", "HNGR", Z4_P_UNIT|Z4_P_ALPHA },
{ "HOLLOWS", "HOLLOW", "HOLW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HOLW", "HOLLOW", "HOLW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HOLWS", "HOLLOW", "HOLW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HRBOR", "HARBOR", "HBR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HT", "HEIGHTS", "HTS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HTS", "HEIGHTS", "HTS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HVN", "HAVEN", "HVN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HWAY", "HIGHWAY", "HWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HWY", "HIGHWAY", "HWY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "INLT", "INLET", "INLT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "IS", "ISLAND", "IS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ISLE", "ISLE", "ISLE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ISLES", "ISLE", "ISLE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ISLND", "ISLAND", "IS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ISLNDS", "ISLANDS", "ISS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ISS", "ISLANDS", "ISS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JCT", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JCTION", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JCTN", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JCTNS", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JCTS", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JUNCTIONS", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JUNCTN", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "JUNCTON", "JUNCTION", "JCT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KEYS", "KEY", "KY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KNL", "KNOLLS", "KNLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KNLS", "KNOLLS", "KNLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KNOL", "KNOLLS", "KNLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KNOLL", "KNOLLS", "KNLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KY", "KEY", "KY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "KYS", "KEY", "KY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LANES", "LANE", "LN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LBBY", "LOBBY", "LBBY", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "LCK", "LOCKS", "LCKS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LCKS", "LOCKS", "LCKS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LDG", "LODGE", "LDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LDGE", "LODGE", "LDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LF", "LOAF", "LF", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LGT", "LIGHT", "LGT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LIGHTS", "LIGHT", "LGT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LK", "LAKE", "LK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LKS", "LAKES", "LKS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LN", "LANES", "LN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LNDG", "LANDING", "LNDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LNDNG", "LANDING", "LNDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LOCK", "LOCKS", "LCKS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LODG", "LODGE", "LDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LOOP", "LOOP", "LOOP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LOOPS", "LOOP", "LOOP", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "LOWR", "LOWER", "LOWR", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "LOT", "LOT", "LOT", Z4_P_UNIT|Z4_P_ALPHA },
{ "MALL", "MALL", "MALL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MANORS", "MANOR", "MNR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MDW", "MEADOWS", "MDWS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MDWS", "MEADOWS", "MDWS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MEADOW", "MEADOWS", "MDWS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MEDOWS", "MEADOWS", "MDWS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MISSN", "MISSION", "MSN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ML", "MILL", "ML", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MLS", "MILLS", "MLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MNR", "MANOR", "MNR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MNRS", "MANOR", "MNR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MNT", "MOUNT", "MT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MNTAIN", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MNTN", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MNTNS", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MOUNTAINS", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MOUNTIN", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MSN", "MISSION", "MSN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MSSN", "MISSION", "MSN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MT", "MOUNT", "MT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MTIN", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "MTN", "MOUNTAIN", "MTN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "N", "NORTH", "N", Z4_P_DIR|Z4_P_ALPHA },
{ "NO", "NORTH", "N", Z4_P_DIR|Z4_P_ALPHA },
{ "NCK", "NECK", "NCK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "NE", "NORTHEAST", "NE", Z4_P_DIR|Z4_P_ALPHA },
{ "NW", "NORTHWEST", "NW", Z4_P_DIR|Z4_P_ALPHA },
{ "OFC", "OFFICE", "OFC", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "ORCH", "ORCHARD", "ORCH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ORCHRD", "ORCHARD", "ORCH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "OVAL", "OVAL", "OVAL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "OVL", "OVAL", "OVAL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PARK", "PARK", "PARK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PARKS", "PARK", "PARK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PARKWAYS", "PARKWAY", "PKY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PARKWY", "PARKWAY", "PKY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PASS", "PASS", "PASS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PATH", "PATH", "PATH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PATHS", "PATH", "PATH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PH", "PENTHOUSE", "PH", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "PIER", "PEIR", "PIER", Z4_P_UNIT|Z4_P_ALPHA },
{ "PIKES", "PIKE", "PIKE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PINE", "PINES", "PNES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PKWAY", "PARKWAY", "PKY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PKWY", "PARKWAY", "PKY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PKWYS", "PARKWAY", "PKY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PKY", "PARKWAY", "PKY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PL", "PLACE", "PL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PLN", "PLAIN", "PLN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PLNS", "PLAINS", "PLNS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PLZ", "PLAZA", "PLZ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PLZA", "PLAZA", "PLZ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PIKE", "PIKE", "PIKE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PNES", "PINES", "PNES", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "POINTS", "POINT", "PT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PORTS", "PORT", "PRT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PR", "PRAIRIE", "PR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PRK", "PARK", "PARK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PRR", "PRAIRIE", "PR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PRT", "PORT", "PRT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PRTS", "PORT", "PRT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PT", "POINT", "PT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "PTS", "POINT", "PT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RAD", "RADIAL", "RADL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RADIEL", "RADIAL", "RADL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RADL", "RADIAL", "RADL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RANCHES", "RANCH", "RNCH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RAPID", "RAPIDS", "RPDS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RD", "ROAD", "RD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RDG", "RIDGE", "RDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RDGE", "RIDGE", "RDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RDGS", "RIDGE", "RDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RDS", "ROAD", "RD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "REAR", "REAR", "REAR", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "RIDGES", "RIDGE", "RDG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RIV", "RIVER", "RIV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RIVR", "RIVER", "RIV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RM", "ROOM", "RM", Z4_P_UNIT|Z4_P_ALPHA },
{ "RNCH", "RANCH", "RNCH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RNCHS", "RANCH", "RNCH", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ROADS", "ROAD", "RD", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ROW", "ROW", "ROW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RPD", "RAPIDS", "RPDS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RPDS", "RAPIDS", "RPDS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RST", "REST", "RST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RUN", "RUN", "RUN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "RVR", "RIVER", "RIV", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "S", "SOUTH", "S", Z4_P_DIR|Z4_P_ALPHA },
{ "SO", "SOUTH", "S", Z4_P_DIR|Z4_P_ALPHA },
{ "SE", "SOUTHEAST", "SE", Z4_P_DIR|Z4_P_ALPHA },
{ "SHL", "SHOAL", "SHL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SHLS", "SHOALS", "SHLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SHOAR", "SHORE", "SHR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SHOARS", "SHORES", "SHRS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SHR", "SHORE", "SHR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SHRS", "SHORES", "SHRS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SIDE", "SIDE", "SIDE", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "SLIP", "SLIP", "SLIP", Z4_P_UNIT|Z4_P_ALPHA },
{ "SMT", "SUMMIT", "SMT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPG", "SPRING", "SPG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPGS", "SPRINGS", "SPGS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPNG", "SPRING", "SPG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPNGS", "SPRINGS", "SPGS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPRNG", "SPRING", "SPG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPRNGS", "SPRINGS", "SPGS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPUR", "SPUR", "SPUR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SPURS", "SPUR", "SPUR", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SQ", "SQUARE", "SQ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SQR", "SQUARE", "SQ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SQRE", "SQUARE", "SQ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SQRS", "SQUARE", "SQ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SQU", "SQUARE", "SQ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SQUARES", "SQUARE", "SQ", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "ST", "STREET", "ST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STA", "STATION", "STA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STATN", "STATION", "STA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STE", "SUITE", "STE", Z4_P_UNIT|Z4_P_ALPHA },
{ "STN", "STATION", "STA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STOP", "STOP", "STOP", Z4_P_UNIT|Z4_P_ALPHA },
{ "STR", "STREET", "ST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRA", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRAV", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRAVE", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRAVEN", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRAVN", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STREETS", "STREET", "ST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STREME", "STREAM", "STRM", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRM", "STREAM", "STRM", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRT", "STREET", "ST", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRVN", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "STRVNUE", "STRAVENUE", "STRA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SUMIT", "SUMMIT", "SMT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SUMITT", "SUMMIT", "SMT", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "SW", "SOUTHWEST", "SW", Z4_P_DIR|Z4_P_ALPHA },
{ "TER", "TERRACE", "TER", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TERR", "TERRACE", "TER", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TPK", "TURNPIKE", "TPKE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TPKE", "TURNPIKE", "TPKE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRACES", "TRACE", "TRCE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRACKS", "TRACK", "TRAK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRAILS", "TRAIL", "TRL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRAK", "TRACK", "TRAK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRCE", "TRACE", "TRCE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRK", "TRACK", "TRAK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRKS", "TRACK", "TRAK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRL", "TRAIL", "TRL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRLR", "TRAILER", "TRLR", Z4_P_UNIT|Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRLS", "TRAIL", "TRL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TRNPK", "TURNPIKE", "TPKE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TUNEL", "TUNNEL", "TUNL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TUNL", "TUNNEL", "TUNL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TUNLS", "TUNNEL", "TUNL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TUNNELS", "TUNNEL", "TUNL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TUNNL", "TUNNEL", "TUNL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "TURNPK", "TURNPIKE", "TPKE", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "UN", "UNION", "UN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "UNIONS", "UNION", "UN", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "UNIT", "UNIT", "UNIT", Z4_P_UNIT|Z4_P_ALPHA },
{ "UPPR", "UPPER", "UPPR", Z4_P_UNIT|Z4_P_EXCEPT|Z4_P_ALPHA },
{ "VALLEYS", "VALLEY", "VLY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VALLY", "VALLEY", "VLY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VDCT", "VIADUCT", "VIA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VIA", "VIADUCT", "VIA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VIADCT", "VIADUCT", "VIA", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VIEWS", "VIEW", "VW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VILL", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VILLAG", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VILLAGES", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VILLG", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VILLIAGE", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VIS", "VISTA", "VIS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VIST", "VISTA", "VIS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VL", "VILLE", "VL", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VLG", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VLGS", "VILLAGE", "VLG", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VLLY", "VALLEY", "VLY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VLY", "VALLEY", "VLY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VLYS", "VALLEY", "VLY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VST", "VISTA", "VIS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VSTA", "VISTA", "VIS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VW", "VIEW", "VW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "VWS", "VIEW", "VW", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "W", "WEST", "W", Z4_P_DIR|Z4_P_ALPHA },
{ "WALK", "WALK", "WALK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "WALKS", "WALK", "WALK", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "WAY", "WAY", "WAY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "WAYS", "WAY", "WAY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "WELL", "WELLS", "WLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "WLS", "WELLS", "WLS", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "WY", "WAY", "WAY", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "XING", "CROSSING", "XING", Z4_P_SUFFIX|Z4_P_ALPHA },
{ "HC", "HC", "HC", Z4_P_HC|Z4_P_ALPHA|Z4_P_EOW },
{ "RR", "RR", "RR", Z4_P_RR|Z4_P_ALPHA|Z4_P_EOW },
{ "RFD", "RR", "RR", Z4_P_RR|Z4_P_ALPHA|Z4_P_EOW },
{ "RT", "RR", "RR", Z4_P_RR|Z4_P_ALPHA|Z4_P_EOW },
{ "POB", "POB", "POB", Z4_P_POB|Z4_P_ALPHA|Z4_P_EOW },
{ "BOX", "BOX", "BOX", Z4_P_UNIT|Z4_P_ALPHA },
{ NULL }
};
#define MAX_WORDS (4096)
static SIZET cWords = 0;
static CHAR chWords[MAX_WORDS];
static Z4_AB abbrev[MAX_ENTRIES];
//----------------------------------------------------------------------------
// Globals
//----------------------------------------------------------------------------
//
// A useless string which is simply embedded in the executable.
//
PSZ __pszCredits__ = "Written by John M Weeder, 1993";
//
// This should contain a program description which will be displayed as
// part of the program's help text.
//
static PCSZ pcszDescription =
"This program generates the various tables used by the ZIP+4 engine.";
//
// Program command line options
//
static BS_CMDOPT acmdopt[] =
{
BS_CMDOPT_NULL,
};
//----------------------------------------------------------------------------
// Description: Sort routine used by qsort to sort an array of record ids.
// Parameters: see qsort()
// Returns: see qsort()
//----------------------------------------------------------------------------
static int __recsort__(const void *pv1, const void *pv2)
{
Z4_ABBR_ENTRY *prec1 = (Z4_ABBR_ENTRY *)pv1;
Z4_ABBR_ENTRY *prec2 = (Z4_ABBR_ENTRY *)pv2;
return stricmp(prec1->psz1, prec2->psz1);
}
//----------------------------------------------------------------------------
// Description: Sort routine used by qsort to sort an array of record ids.
// Parameters: see qsort()
// Returns: see qsort()
//----------------------------------------------------------------------------
static void Add(PSZ psz1, PSZ psz2, PSZ psz3, FLAG16 fs)
{
SIZET i;
for (i = 0; i < cEntries; ++i)
if (strcmp(psz1, entry[i].psz1) == 0
&& strcmp(psz2, entry[i].psz2) == 0)
{
if (strcmp(psz3, entry[i].psz3) != 0 || fs != entry[i].fs)
{
Output("Conflicting entries for '%s'\n", psz1);
exit(99);
}
return ;
}
if (cEntries >= MAX_ENTRIES)
{
Output("Abbreviation table is full.\n");
exit(99);
}
entry[cEntries].psz1 = psz1;
entry[cEntries].psz2 = psz2;
entry[cEntries].psz3 = psz3;
entry[cEntries].fs = fs;
cEntries++;
return ;
}
//----------------------------------------------------------------------------
// Description: Sort routine used by qsort to sort an array of record ids.
// Parameters: see qsort()
// Returns: see qsort()
//----------------------------------------------------------------------------
static SIZET AddWord(PSZ psz)
{
SIZET i;
SIZET cLen = strlen(psz);
for (i = 0; i < cWords; )
{
SIZET cWord = strlen(chWords + i);
if (cWord == cLen && strcmp(psz, chWords + i) == 0)
return i;
i += cWord + 1;
}
if (cWords + cLen + 1 >= MAX_WORDS)
{
Output("Word arrary is full.\n");
exit(99);
}
strcpy(chWords + cWords, psz);
i = cWords;
cWords += cLen + 1;
return i;
}
//----------------------------------------------------------------------------
// Description: main() - Program entry point
// Parameters: Standard C parameters
// Returns: DOS return code.
//----------------------------------------------------------------------------
int main(int argc, char **argv)
{
static BS_CFG cfg = CFG_DFT;
int retval = 99;
SIZET i, j;
FILE *file;
//
// Initialize base library
//
BaseLibraryInitialize(argc, argv, &cfg);
BaseTitle("$Revision: 93.1 $", __DATE__, __TIME__, "9-Digit ZIP Disc Abbreviation List Build");
if (!BaseTitleHelp(acmdopt, pcszDescription, NULL))
return 99;
Output("Cleaning up table...");
for (cEntries = 0; entry[cEntries].psz1; ++cEntries)
{
strupr(entry[cEntries].psz1);
strupr(entry[cEntries].psz2);
strupr(entry[cEntries].psz3);
}
Output("\n");
Output("Inserting abbreviated spelling cross reference entries...");
j = cEntries;
for (i = 0; i < j; ++i)
Add(entry[i].psz3, entry[i].psz2, entry[i].psz3, entry[i].fs);
Output("\n");
Output("Inserting full spelling cross reference entries...");
j = cEntries;
for (i = 0; i < j; ++i)
Add(entry[i].psz2, entry[i].psz2, entry[i].psz3, entry[i].fs);
Output("\n");
Output("Sorting table...");
qsort(entry, cEntries, sizeof(Z4_ABBR_ENTRY), __recsort__);
Output("\n");
Output("Creating abbreviation list...");
for (i = 0; i < cEntries; ++i)
{
abbrev[i].cWord = AddWord(entry[i].psz1);
abbrev[i].cFull = AddWord(entry[i].psz2);
abbrev[i].cAbbrev = AddWord(entry[i].psz3);
abbrev[i].fs = entry[i].fs;
}
Output("\n");
Output("Opening output...\n");
file = fopen("abbrev.dat", "w+t");
if (file == NULL)
{
Output("Can't open output file.\n");
exit(99);
}
Output("Writing word array...");
fprintf(file, "CHAR _FAR_ __chWordTable[] =\n");
fprintf(file, " {\n");
for (i = 0; i < cWords; )
{
fprintf(file, " ");
for (j = 0; j < 16 && i < cWords; ++j, ++i)
{
if (chWords[i])
fprintf(file, "'%c',", chWords[i]);
else
fprintf(file, " 0 ,");
}
fprintf(file, "\n");
}
fprintf(file, " };\n");
Output("\n%u bytes in word table.\n", cWords);
Output("Writing abbreviation list...\n");
fprintf(file, "\n\nZ4_AB _FAR_ __abbrevTable[] =\n");
fprintf(file, " {\n");
for (i = 0; i < cEntries; ++i)
{
CHAR szType[40];
FLAG16 fs = abbrev[i].fs;
szType[0] = '\0';
if (fs & Z4_P_SUFFIX)
{
fs &= ~Z4_P_SUFFIX;
strcat(szType, "Z4_P_SUFFIX");
}
if (fs & Z4_P_DIR)
{
fs &= ~Z4_P_DIR;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_DIR");
}
if (fs & Z4_P_UNIT)
{
fs &= ~Z4_P_UNIT;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_UNIT");
}
if (fs & Z4_P_EXCEPT)
{
fs &= ~Z4_P_EXCEPT;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_EXCEPT");
}
if (fs & Z4_P_ALPHA)
{
fs &= ~Z4_P_ALPHA;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_ALPHA");
}
if (fs & Z4_P_OTHER)
{
fs &= ~Z4_P_OTHER;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_OTHER");
}
if (fs & Z4_P_NUMERIC)
{
fs &= ~Z4_P_NUMERIC;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_NUMERIC");
}
if (fs & Z4_P_POB)
{
fs &= ~Z4_P_POB;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_POB");
}
if (fs & Z4_P_HC)
{
fs &= ~Z4_P_HC;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_HC");
}
if (fs & Z4_P_RR)
{
fs &= ~Z4_P_RR;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_RR");
}
if (fs & Z4_P_GD)
{
fs &= ~Z4_P_GD;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_GD");
}
if (fs & Z4_P_PM)
{
fs &= ~Z4_P_PM;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_PM");
}
if (fs & Z4_P_ORDINAL)
{
fs &= ~Z4_P_ORDINAL;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_ORDINAL");
}
if (fs & Z4_P_EOW)
{
fs &= ~Z4_P_EOW;
if (szType[0])
strcat(szType, "|");
strcat(szType, "Z4_P_EOW");
}
fprintf(file, " {0x%04X, 0x%04X, 0x%04X, 0%-39s}, // %s\n",
abbrev[i].cWord, abbrev[i].cFull, abbrev[i].cAbbrev, "",
chWords + abbrev[i].cWord);
Assert(fs == 0);
Output("%-15s %-15s %-10s %-32s\n",
chWords + abbrev[i].cWord, chWords + abbrev[i].cFull,
chWords + abbrev[i].cAbbrev, szType);
}
// Last element points to empty string!!
fprintf(file, " {0x%04X, 0x%04X, 0x%04X, %-40s}, // End of list\n",
cWords - 1, cWords - 1, cWords - 1, "");
fprintf(file, " };\n");
Output("Writing suffix list...\n");
fprintf(file, "\n\nZ4_SF _FAR_ __suffixTable[] =\n");
fprintf(file, " {\n");
fprintf(file, " { 0x%04X, 0x%04X }, // Blank suffix\n",
cWords - 1, cWords - 1);
for (i = 0; i < cEntries; ++i)
{
PSZ pszWord = chWords + abbrev[i].cWord;
PSZ pszFull = chWords + abbrev[i].cFull;
PSZ pszAbbrev = chWords + abbrev[i].cAbbrev;
if (BTEST(abbrev[i].fs, Z4_P_SUFFIX)
&& strcmp(pszWord, pszAbbrev) == 0)
{
fprintf(file, " { 0x%04X, 0x%04X }, // %-4s %s\n",
abbrev[i].cWord, abbrev[i].cFull, pszAbbrev, pszFull);
Output("%-15s %-15s\n", pszWord, pszFull);
}
}
fprintf(file, " };\n\n");
fclose(file);
Output("\nDone. (%u entries)\n", cEntries);
return retval;
}
//----------------------------------------------------------------------------
//------------------------------- End of File --------------------------------
//----------------------------------------------------------------------------